package br.com.average.charts;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import org.primefaces.model.chart.BarChartSeries;
import org.primefaces.model.chart.CartesianChartModel;

import br.com.average.to.ProjetoValores;

public class QuantidadeHoras extends Chart implements Serializable {
	
	public QuantidadeHoras(List<ProjetoValores> projetosValores, List<String> projetosSelecionados, int maxProjs){
		criarLucroPrevisto(projetosValores, projetosSelecionados, maxProjs);
	}
	
	private CartesianChartModel qtdeHorasChart;
	private int max;

	public CartesianChartModel getQtdeHorasChart() {
		return qtdeHorasChart;
	}
	public void setQtdeHorasChart(CartesianChartModel qtdeHorasChart) {
		this.qtdeHorasChart = qtdeHorasChart;
	}
	public int getMax() {
		return max;
	}
	public void setMax(int max) {
		this.max = max;
	}

	
	private void criarLucroPrevisto(List<ProjetoValores> projetosValores, List<String> projetosSelecionados, int maxProjs) {
		
		qtdeHorasChart = new CartesianChartModel();
		this.max = 0;
		double qtdeHorasPrevistas;
		double qtdeHorasEstimadas;
		int idProjeto;
		String nomeCli;
		List<String> clientesAdicionados = new ArrayList<String>();

		BarChartSeries barraHorasPrevistas = new BarChartSeries();
		barraHorasPrevistas.setLabel("H.VEN"); 
		
		BarChartSeries barraHorasEstimadas = new BarChartSeries();
		barraHorasEstimadas.setLabel("ENT");
		
		for (int i = 0; i < projetosSelecionados.size(); i++) {
			
			if (i == maxProjs) {
				break;
			}
			
			idProjeto = Integer.valueOf(projetosSelecionados.get(i));
			ProjetoValores projVal = new ProjetoValores();
			
			for(ProjetoValores prjV : projetosValores){
				if (prjV.getProjeto().getId() == idProjeto){
					projVal = prjV;
					break;
				}
			}
			
			nomeCli = preencherNomeCliente(projVal, clientesAdicionados);
			
			qtdeHorasPrevistas = projVal.getHrVend();
			barraHorasPrevistas.set(nomeCli, qtdeHorasPrevistas);
			
			if (qtdeHorasPrevistas > max) {
				max = (int) qtdeHorasPrevistas;
			}
			
			qtdeHorasEstimadas = projVal.getEnt();
			barraHorasEstimadas.set(nomeCli, qtdeHorasEstimadas);
			
			if (qtdeHorasEstimadas > max) {
				max = (int) qtdeHorasEstimadas;
			}
			
		}
		
		qtdeHorasChart.addSeries(barraHorasPrevistas);  
		qtdeHorasChart.addSeries(barraHorasEstimadas);
		
		max = (int) (max * 1.1);
		
	}
	
	
}
